1 Field of the Invention
This invention pertains in general to a system for dispatching units of work in multi-threaded computer systems. Specifically, this invention pertains to a system used to dispatch units of work to general processors and specialty engines.
2 Description of the Related Art
A service-oriented architecture, herein referred to as a “SOA,” is an underlying structure supporting communications between computing entities. A SOA defines how two computing entities, such as programs, interact in such a way as to enable one entity to perform a unit of work on behalf of another entity. A “unit of work,” as used herein, refers to a unit of work required for the execution of a computing entity such as a computer system, program or a function. In most instances, a unit of work is unit of executable code in the form of one or more instructions or transactions to be executed by a processor. Computing entities comprise of threads, where a thread is set of one or more units of work that are performed sequentially. A multi-threaded computing entity is composed of one or more threads.
In SOAs, interactions between computing entities are defined using a description language. Each interaction defined using the description language is self-contained and loosely coupled to other interactions, so that each interaction is independent of any other interaction and underlying technologies such as computing systems, operating systems or programming languages.
A mainframe computer is a large computing system capable of performing hundreds to thousands of units of work simultaneously. Because of the above discussed independence, SOAs have enabled mainframe computers to participate in cross-platform environments. This participation is especially beneficial because legacy software applications are operable only on mainframe computers. Accordingly, SOAs allow for the development of programs which interact with legacy software applications on mainframe computers.
Specialty engines have been developed in order to optimize performance of mainframe computers used in conjunction with SOAs. Specialty engines are specialized processors which are optimized to execute specific units of work. A specific unit of work, as defined herein, refers to a unit of work that has been optimized to execute on a specific processor due to specific characteristics of the unit of work. The specialized units of work may be optimized based on the programming language (e.g. Java), the operating system (e.g. Linux) or the type of function performed by the unit of work (e.g. XML parsing). For example, specialty engines developed by IBM to optimize processing include: the System z9 Integrated Information Processor (zIIP), the System z Application Assist Processor (zAAP), the Integrated Facility for Linux (IFL) and the Internal Coupling Facility (ICF).
Specialty engines lower the total cost of ownership of the mainframe computer. Cost of ownership of mainframe computers is typically defined as the hardware, software and salary costs associated with units of work performed by the mainframe computer. By using the specialty engines to execute units of work, specialized units of work are diverted from the general processors at the mainframe, increasing the availability of the general processors for executing units of work that can only be processed by the general processor computing capability. This increase in availability reduces the hardware costs associated with buying extra general processors. Units of work deployed to the specialty processors are also not subject to the restrictions in performance or “throttle” effects of the general processors and thus can be performed more efficiently.
Although specialized engines provide many benefits, computing entities such as software applications are often comprised of both specialized units of work and units of work can only be processed by general processors. Accordingly, there is a need in the art for systems which effectively perform both specialized units of work and units of work that can only be processed by general processors.